package com.itheima.tlias84.controller;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.itheima.tlias84.config.AliyunOssConfig;
import com.itheima.tlias84.utils.ResultUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/upload")
public class UploadController {
    /**
     * MultipartFile spring封装的用于接收文件的对象
     *
     * @param file
     * @return
     */

    @Resource
    AliyunOssConfig ossConfig;


    @PostMapping
    public ResultUtil upload(MultipartFile file){
        //获取参数名
        log.info("name{}",file.getName());
        //拆分文件后缀名（类型）
        log.info("originalName{}",file.getOriginalFilename());
        String filename = file.getOriginalFilename();
        String suffix = filename.substring(filename.lastIndexOf("."));
        //阿里云oss访问路径
        String endpoint = ossConfig.getEndpoint();
        // 填写Bucket名称，例如test-htovo
        String bucketName = ossConfig.getBucketName();
        //生成不重复的id
        String uuid = UUID.randomUUID().toString();
        // 填写Object完整路径，完整路径中不能包含Bucket名称，例如exampledir/exampleobject.txt。
        String objectName =uuid+suffix;
        //转移文件到阿里云oss
        // 创建OSSClient实例。要指定访问秘钥
        OSS ossClient = new OSSClientBuilder().build(endpoint,ossConfig.getAccessKeyId()
                ,ossConfig.getSecretAccessKey());
        try {
            ossClient.putObject(bucketName,objectName,file.getInputStream());
            String url = ossConfig.getUrl()+objectName;
            return ResultUtil.success(new StringBuilder(url));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
//        String upload = OssUtil.upload(file);
//        return ResultUtil.success(upload);

    }

}
